perm filename METER.FAI[XX,LCS]1 blob
sn#207680 filedate 1976-03-25 generic text, type T, neo UTF8
00100 ;; 24300 SUBROUTINE METER
00200 TITLE METER
00300 ENTRY METER,MAKNUM
00400 EXTERNAL NOZERO,.COMM.,ITMSUB,POSI
00410 EXTERNAL ALPHA,IFIX,STF,FLOAT,AMOD,CENTX,SLUR
00500 METER: 0
00600 ; 25100 CALL NOZERO(R7)
00700 JSA 16,NOZERO
00800 JUMP .COMM.+=8
00900 ; 25200 JZ=J3
01000 MOVE 02,.COMM.+=24
01100 MOVEM 02,JZ#
01200
01300 ; 25300 RY=R4+8.*.COMM.+=8
01400 MOVE 02,.COMM.+=8
01500 FSC 02,3
01600 FADRB 02,.COMM.+5
01700 MOVEM 02,RY#
01800 ; 26300 R4=RY
01900 ; 25400 C HEIGHT
02000 ; 25500 RW=R6
02100 MOVE 02,.COMM.+7
02200 MOVEM 02,RW#
02300 ; 25600 C BOTTOM NUM
02400 ; 25700 C P5=TOP NUM
02500 ; 25800 R6=.COMM.+=8
02600 MOVE 02,.COMM.+=8
02700 MOVEM 02,.COMM.+7
02800 ; 25900 RR6=R6
02900 MOVEM 02,RR6#
03000 ; 26000 C SIZE
03100 ; 26100 C FOR BDR40 -- OR =1
03200 ; 26200 M=0
03300 SETZM M#
03400 ; 26400 2 .COMM.+=8=0
03500 MT2: SETZM .COMM.+=8
03600 ; 26500 C .COMM.+=8=0 FOR BDR FONT??
03700 ; 26600 CC IF(R5.NE.99)GO TO 1
03800 ; 26700 IF(R5.LT.90)GO TO 3
03900 MOVSI 02,207550
04000 CAMLE 02,.COMM.+6
04100 JRST MT3
04200 ; 26800 C 99 AS METER = 'C' 98=ALLA BREVE (CUT TIME)
04300 ; 26900 M=-1
04400 SETOM M
04500 ; 27000 IF(R5.NE.98)GO TO 4
04600 MOVSI 02,207610
04700 CAME 02,.COMM.+6
04800 JRST MT4
04900 ; 27100 C NEXT FOR LINE THROUGH C.
05000 ; 27200 RZ=R6
05100 ;; MOVE 02,.COMM.+7
05200 ;; MOVEM 02,RZ#
05300 ; 27300 RY=R4
05400 ;; MOVE 02,.COMM.+5
05500 ;; MOVEM 02,RY
05600 ; 27400 RA=POS
05700 MOVE 02,POSI+=9
05800 MOVEM 02,RA#
05900 ; 27500 R6=RX3
06000 MOVE 02,.COMM.+=23
06100 MOVEM 02,.COMM.+7
06200 ; 27600 C TO LINE UP WITH R3
06300 ; 27700 J10=2
06400 MOVEI 02,2
06500 MOVEM 02,.COMM.+=31
06600 ; 27800 C FOR THICK LINE
06700 ; 27810 CC R5=9.8+R4
06800 ; 28000 R4=R4-3.8
06900 MOVN 02,[3.8]
07000 FADRB 02,.COMM.+5
07100 ; 28050 R5=R4+5.6
07200 FADR 02,[5.6]
07300 MOVEM 02,.COMM.+6
07400 ; 28100 J7=0
07500 SETZM .COMM.+=28
07600 ; 28200 R8=0
07700 SETZM .COMM.+=9
07800 ; 28300 CALL ITMSUB
07900 JSA 16,ITMSUB
08000 ; 28400 POS=RA
08100 MOVE 02,RA
08200 MOVEM 02,POSI+=9
08300 ; 28500 R4=RY
08400 MOVE 02,RY
08500 MOVEM 02,.COMM.+5
08600 ; 28600 R6=RZ
08700 MOVE 02,RR6
08800 MOVEM 02,.COMM.+7
08900 ; 28700 C GET BACK THE RIGHT PARAMS.
09000 ; 28900 4 R5=9999.
09100 MT4: MOVE 02,[9999.0]
09200 MOVEM 02,.COMM.+6
09300 ; 29100 C TO CENTER 12S AND 16S
09400 ; 29200 3 CALL MAKNUM(R5)
09500 MT3: JSA 16,MAKNUM
09600 JUMP .COMM.+6
09700 ; 29300 IF(M)RETURN
09800 SKIPGE M
09900 JRA 16,(16)
10000 ; 29400 C STICK AROUND FOR BOTTOM NUM
10100 ; 29500 M=-1
10200 SETOM M
10300 ; 29700 R6=RR6
10400 MOVE 02,RR6
10500 MOVEM 02,.COMM.+7
10600 ; 29600 R4=RY-4.*RR6
10700 FSC 02,2
10800 FSBR 02,RY
10900 MOVNM 02,.COMM.+5
11000 ; 29800 R5=RW
11100 MOVE 02,RW#
11200 MOVEM 02,.COMM.+6
11300 ; 29900 C GET BOTTOM NUM
11400 ; 30000 J3=JZ
11500 MOVE 02,JZ
11600 MOVEM 02,.COMM.+=24
11700 ; 30100 R8=0
11800 SETZM .COMM.+=9
11900 ; 30200 GO TO 2
12000 JRST MT2 ;30300 END
12100
12200
12500 MAKNUM: 0 ; SUBROUTINE MAKNUM(RNUM)
12600 ;100 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/STF/RSTFAC(-3/4),RSTJ2
12700 ;200 EQUIVALENCE (J3,JQ(1)),(R4,RJQ(2)),(R8,RJQ(6)),(R7,RJQ(5))
12800 ;300 1,(R6,RJQ(4)),(R5,RJQ(3)),(R7,RJQ(5)),(JQ(15),B),(JQ(16),C)
12900 ;400 1 ,(J8,JQ(6)),(J10,JQ(8)),(R3,RJQ(1)),(J5,JQ(3)),(RJY,JQ(19))
13000 ;500 1 ,(J7,JQ(5)),(J6,JQ(4)),(R9,RJQ(7))
13100 ;600 DATA RS/10.0/,RBX/1.0/
13200 MOVE 11,@(16) ;GET RNUM (KEEP 11 CLEAN IN OTHER ROUTINES)
13400 MOVE 02,.COMM.+=9 ; RB8=R8
13500 MOVEM 02,RB8#
13600 MOVE 02,.COMM.+=24 ; J3X=J3
13700 MOVEM 02,J3X# ; P7=0=BDR40; =1=BDI40; =2=PRIM.
13800 JSA 16,NOZERO ; CALL NOZERO(R6)
13900 JUMP .COMM.+7
14000 MOVE 02,.COMM.+7 ; R5=R6
14100 MOVEM 02,.COMM.+6 ; UPPER CASE - BDR40
14200 MOVSI 02,206620 ; R6=48000000.0+(R7+50.)*10000.
14300 FADR 02,.COMM.+=8
14400 FMPR 02,[10000.0]
14500 FADR 02,[48000000.0]
14600 MOVEM 02,.COMM.+7
14700 MOVE 02,[99999999.0] ; R7=99999999.0
14800 MOVEM 02,.COMM.+=8
14900 ; 32500 C BLANKS
15000 ; 32700 IF(RNUM.NE.9999.)GO TO 2
15100 CAME 11,[9999.0]
15200 JRST MN2
15300 ; 32800 C NEXT FOR 'C'OMMON TIME
15400 ; 32900 RNUM=12.
15500 MOVSI 11,204600
15600 ; 33000 C MAKES A 'C'
15700 ; 33100 R4=R4-2.2
15800 MOVN 02,[2.2]
15900 FADRM 02,.COMM.+5
16000 ; 33200 C .2 FOR BAD POS. OF LETTERS
16100 ; 33300 GO TO 4
16200 JRST MN4
16300 ; 33500 2 ONE=0
16400 MN2: SETZM ONE#
16500 ; 33600 RNUM=IFIX(RNUM)
16600 JSA 16,IFIX
16700 JUMP 11
16800 MOVEM 11
16900 JSA 16,FLOAT
17000 JUMP 11
17100 MOVEM 11
17200 ; 33700 C SO MISTAKES (I.E. 2.2) WON'T BREAK THE PROG.
17300 ; 33800 IF(RNUM.EQ.1.)ONE=3.
17400 MOVSI 02,201400
17500 CAME 02,11
17600 JRST .+3
17700 MOVSI 02,202600
17800 MOVEM 02,ONE
17900 ; 33900 IF(RNUM.GT.9.)GO TO 3
18000 MOVSI 02,204440
18100 CAMGE 02,11
18200 JRST MN3
18300 ; 34000 C JUMP FOR 2 OR 3 DIGIT NUMBER
18400 ; 34100 4 R6=R6+RNUM*100.+47.
18500 MN4: MOVSI 02,206570
18600 MOVSI 03,207620
18700 FMPR 03,11
18800 FADR 02,3
18900 FADRM 02,.COMM.+7
19000 ; 34200 C PUTS BLANK ON END (.47)
19100 ; 34300 GO TO 1
19200 JRST MN1
19300 ; 34500 3 RJY=10.
19400 MN3: MOVSI 02,204500
19500 MOVEM 02,RJY#
19600 ; 34600 IF(RNUM.GE.100.)RJY=100.
19700 MOVSI 02,207620
19800 CAMLE 02,11
19900 JRST .+3
20000 MOVSI 02,207620
20100 MOVEM 02,RJY
20200 ; 34700 B=IFIX(RNUM/RJY)
20300 MOVE 02,11
20400 FDVR 02,RJY
20500 MOVEM 02,B#
20600 JSA 16,IFIX
20700 JUMP B#
20800 MOVEM B#
20900 JSA 16,FLOAT
21000 JUMP B#
21100 MOVEM B
21200 ; 34800 C=AMOD(RNUM,RJY)
21300 JSA 16,AMOD
21400 JUMP 11
21500 JUMP RJY
21600 MOVEM C#
21700 ; 34900 IF(RNUM.LT.100)GO TO 7
21800 MOVSI 02,207620
21900 CAMLE 02,11
22000 JRST MN7
22100 ; 35000 D=IFIX(C/10.)
22200 MOVE 02,C
22300 FDVR 02,[10.0]
22400 MOVEM 02,D#
22500 JSA 16,IFIX
22600 JUMP D
22700 MOVEM D
22800 JSA 16,FLOAT
22900 JUMP D
23000 MOVEM D
23100 ; 35100 C=AMOD(C,10.)
23200 JSA 16,AMOD
23300 JUMP C
23400 JUMP [10.0]
23500 MOVEM C
23600 ; 35200 IF(C.EQ.1.)ONE=ONE+3.
23700 MOVSI 3,201400
23800 CAME 3,C
23900 JRST .+3
24000 MOVSI 02,202600
24100 FADRM 02,ONE
24200 ; 35300 R7=C*1000000.+999999.0
24300 MOVE 02,[1000000.0]
24400 FMPR 02,C
24500 FADR 02,[999999.0]
24600 MOVEM 02,.COMM.+=8
24700 ; 35400 C=D
24800 MOVE 02,D
24900 MOVEM 02,C
25000 ; 35500 7 R6=R6+B*100.+C
25100 MN7: MOVE 02,.COMM.+7
25200 FADR 02,C
25300 MOVSI 03,207620
25400 FMPR 03,B
25500 FADR 02,3
25600 MOVEM 02,.COMM.+7
25700 ; 35600 IF(B.EQ.1.)ONE=ONE+3.
25800 MOVSI 02,201400
25900 CAME 02,B
26000 JRST .+3
26100 MOVSI 02,202600
26200 FADRM 02,ONE
26300 ; 35700 IF(C.EQ.1.)ONE=ONE+3.
26400 MOVSI 02,201400
26500 CAME 02,C
26600 JRST .+3
26700 MOVSI 02,202600
26800 FADRM 02,ONE
26900 ; 35800 B=R5
27000 MOVE 02,.COMM.+6
27100 MOVEM 02,B
27200 ; 35900 IF(RNUM.GE.100.)B=B*2
27300 MOVSI 02,207620
27400 CAMLE 02,11
27500 JRST .+3
27600 MOVSI 02,202400
27700 FMPRM 02,B
27800 ; 36000 J3=J3-RS*RSTJ2*B
27900 MOVE 02,[10.0]
28000 FMPR 02,STF+=8
28100 FMPR 02,B
28200 JSA 16,FLOAT
28300 JUMP .COMM.+=24
28400 FSBR 2
28500 MOVEM 3
28600 JSA 16,IFIX
28700 JUMP 3
28800 MOVEM .COMM.+=24
28900 ; 36100 C FOR 2 DIGIT NUMBER
29000 ; 36600 C ADJUSTS FOR 11, ETC.
29100 ; 36900 1 J3=J3+ONE*R5*RSTJ2
29200 MN1: MOVE 02,.COMM.+6
29300 FMPR 02,ONE
29400 FMPR 02,STF+=8
29500 JSA 16,FLOAT
29600 JUMP .COMM.+=24
29700 FADR 2
29800 MOVE 3,
29900 JSA 16,IFIX
30000 JUMP 3
30100 MOVEM .COMM.+=24
30200 ; 37000 C CENTERS THE NUMBER '1'
30300 ; 37100 CALL ALPHA
30400 JSA 16,ALPHA
30500 ; 37200 J3=J3X
30600 MOVE 02,J3X#
30700 MOVEM 02,.COMM.+=24
30800 ; 37300 IF(RB8.EQ.0)RETURN
30900 SKIPN RB8
31000 JRA 16,1(16)
31100 ; 37400 C NEXT FOR CIRCLES AND BOXES AROUND NUMBERS.
31200 JSA 16,FLOAT ;37500 R3=J3-R5
31300 JUMP .COMM.+=24
31400 FSBR .COMM.+6
31500 MOVEM .COMM.+4
31600 SKIPE .COMM.+=31 ;37600 IF(J10.EQ.0)J10=1
31700 JRST .+3
31800 MOVEI 02,1
31900 MOVEM 02,.COMM.+=31 ;USE J10 FOR EVEN THICKER BOX AND CIRC.
32000 ; 37800 IF(RNUM.GT.9)R3=R3+R5*RBX
32100 MOVSI 02,204440
32200 CAML 02,11
32300 JRST .+4
32400 MOVSI 02,201400
32500 FMPR 02,.COMM.+6
32600 FADRM 02,.COMM.+4
32700 ; 37900 C TO SET CENTER IF(RB8.EQ.2)GO TO 5
32800 MOVSI 02,202400
32900 CAMN 02,RB8
33000 JRST MN5
33100 MOVE 02,[0.05] ;38100 R4=R4+R5+.1+.05/R5
33200 FDVR 02,.COMM.+6
33300 FADR 2,[0.1]
33400 FADR 02,.COMM.+6
33500 FADRM 02,.COMM.+5
33600 ; 38200 C END OF ABOVE IS FOR SMALL CIRCLES.
33700 MOVSI 02,203440 ;38300 B=4.5
33800 MOVEM 02,B
33900 ; 38400 IF(RNUM.GE.100.)B=5.5
34000 MOVSI 02,207620
34100 CAMLE 02,11
34200 JRST .+3
34300 MOVSI 02,203540
34400 MOVEM 02,B
34500 ; 38500 R5=R5*B
34600 MOVE 02,B
34700 FMPRM 02,.COMM.+6
34800 ; 38600 JA=12
34900 MOVEI 02,14
35000 MOVEM 02,.COMM.+1
35100 ; 38700 J6=0
35200 SETZM .COMM.+=27
35300 ; 38800 J7=0
35400 SETZM .COMM.+=28
35500 ; 38900 J8=J10
35600 MOVE 02,.COMM.+=31
35700 MOVEM 02,.COMM.+=29 ;39000 CALL CENTX
35800 JSA 16,CENTX
35900 JSA 16,SLUR ;39100 CALL SLUR
36000 JRA 16,1(16) ;39200 RETURN
36100 ; 39400 5 JA=4
36200 MN5: MOVEI 02,4
36300 MOVEM 02,.COMM.+1
36400 ; 39500 B=6
36500 MOVSI 02,203600
36600 MOVEM 02,B
36700 ; 39600 R9=0
36800 SETZM .COMM.+=10
36900 ; 39700 IF(RNUM.LT.100.)GO TO 8
37000 MOVSI 02,207620
37100 CAMLE 02,11
37200 JRST MN8
37300 ; 39800 B=9.
37400 MOVSI 02,204440
37500 MOVEM 02,B
37600 ; 39900 R9=R5*6.
37700 MOVSI 02,203600
37800 FMPR 02,.COMM.+6
37900 MOVEM 02,.COMM.+=10
38000 ; 40000 C MAKES RECTANGLE IF ↑100
38100 ; 40100 8 R4=R4+R5*.7+.1
38200 MN8: MOVE 03,[0.7]
38300 FMPR 03,.COMM.+6
38400 FADR 3,[0.1]
38500 FADRM 3,.COMM.+5
38600 ; 40200 R8=R5*B
38700 MOVE 02,.COMM.+6
38800 FMPR 02,B
38900 MOVEM 02,.COMM.+=9
39000 ; 40300 J5=50
39100 MOVEI 02,62
39200 MOVEM 02,.COMM.+=26
39300 ; 40400 CALL ITMSUB
39400 JSA 16,ITMSUB
39500 ; 40500 C RETURNS ORIG. HORIZ. POS.
39600 JRA 16,1(16) ;40600 END
39700 END